home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  8.8 KB  |  379 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        OSUtils.p
  3.  
  4.      Contains:    OS Utilities Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT OSUtils;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __OSUTILS__}
  27. {$SETC __OSUTILS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC OSUtilsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __MIXEDMODE__}
  37. {$I MixedMode.p}
  38. {$ENDC}
  39. {  HandToHand and other memory utilties were moved to MacMemory.h }
  40. {$IFC UNDEFINED __MACMEMORY__}
  41. {$I MacMemory.p}
  42. {$ENDC}
  43. {  GetTrapAddress and other trap table utilties were moved to Patches.h }
  44. {$IFC UNDEFINED __PATCHES__}
  45. {$I Patches.p}
  46. {$ENDC}
  47. {  Date and Time utilties were moved to DateTimeUtils.h }
  48. {$IFC UNDEFINED __DATETIMEUTILS__}
  49. {$I DateTimeUtils.p}
  50. {$ENDC}
  51. {$IFC NOT TARGET_OS_MAC }
  52. {$IFC UNDEFINED __ENDIAN__}
  53. {$I Endian.p}
  54. {$ENDC}
  55. {$ENDC}
  56.  
  57.  
  58. {$PUSH}
  59. {$ALIGN MAC68K}
  60. {$LibExport+}
  61.  
  62.  
  63. CONST
  64.     useFree                        = 0;
  65.     useATalk                    = 1;
  66.     useAsync                    = 2;
  67.     useExtClk                    = 3;                            { Externally clocked }
  68.     useMIDI                        = 4;
  69.  
  70.     false32b                    = 0;                            { 24 bit addressing error }
  71.     true32b                        = 1;                            { 32 bit addressing error }
  72.  
  73.                                                                 {  result types for RelString Call  }
  74.     sortsBefore                    = -1;                            { first string < second string }
  75.     sortsEqual                    = 0;                            { first string = second string }
  76.     sortsAfter                    = 1;                            { first string > second string }
  77.  
  78.     dummyType                    = 0;
  79.     vType                        = 1;
  80.     ioQType                        = 2;
  81.     drvQType                    = 3;
  82.     evType                        = 4;
  83.     fsQType                        = 5;
  84.     sIQType                        = 6;
  85.     dtQType                        = 7;
  86.     nmType                        = 8;
  87.  
  88.  
  89. TYPE
  90.     QTypes                                = SignedByte;
  91.     SysParmTypePtr = ^SysParmType;
  92.     SysParmType = PACKED RECORD
  93.         valid:                    UInt8;
  94.         aTalkA:                    UInt8;
  95.         aTalkB:                    UInt8;
  96.         config:                    UInt8;
  97.         portA:                    INTEGER;
  98.         portB:                    INTEGER;
  99.         alarm:                    LONGINT;
  100.         font:                    INTEGER;
  101.         kbdPrint:                INTEGER;
  102.         volClik:                INTEGER;
  103.         misc:                    INTEGER;
  104.     END;
  105.  
  106.     SysPPtr                                = ^SysParmType;
  107.     QElemPtr = ^QElem;
  108.     QElem = RECORD
  109.         qLink:                    QElemPtr;
  110.         qType:                    INTEGER;
  111.         qData:                    ARRAY [0..0] OF INTEGER;
  112.     END;
  113.  
  114. {$IFC TARGET_OS_MAC }
  115.     QHdrPtr = ^QHdr;
  116.     QHdr = RECORD
  117.         qFlags:                    INTEGER;
  118.         qHead:                    QElemPtr;
  119.         qTail:                    QElemPtr;
  120.     END;
  121.  
  122. {$ELSEC}
  123. {
  124.    QuickTime 3.0:
  125.    this version of QHdr contains the Mutex necessary for
  126.    non-mac non-interrupt code
  127. }
  128.     QHdrPtr = ^QHdr;
  129.     QHdr = RECORD
  130.         qFlags:                    INTEGER;
  131.         pad:                    INTEGER;
  132.         MutexID:                LONGINT;
  133.         qHead:                    QElemPtr;
  134.         qTail:                    QElemPtr;
  135.     END;
  136.  
  137. {$ENDC}  {TARGET_OS_MAC}
  138.  
  139.  
  140.  
  141. {$IFC TYPED_FUNCTION_POINTERS}
  142.     DeferredTaskProcPtr = PROCEDURE(dtParam: LONGINT);
  143. {$ELSEC}
  144.     DeferredTaskProcPtr = Register68kProcPtr;
  145. {$ENDC}
  146.  
  147.     DeferredTaskUPP = UniversalProcPtr;
  148.  
  149. CONST
  150.     uppDeferredTaskProcInfo = $0000B802;
  151.  
  152. FUNCTION NewDeferredTaskProc(userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
  153.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  154.     INLINE $2E9F;
  155.     {$ENDC}
  156.  
  157. PROCEDURE CallDeferredTaskProc(dtParam: LONGINT; userRoutine: DeferredTaskUPP);
  158.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  159.     {To be implemented:  Glue to move parameters into registers.}
  160.     {$ENDC}
  161.  
  162. TYPE
  163.     DeferredTaskPtr = ^DeferredTask;
  164.     DeferredTask = RECORD
  165.         qLink:                    QElemPtr;
  166.         qType:                    INTEGER;
  167.         dtFlags:                INTEGER;
  168.         dtAddr:                    DeferredTaskUPP;
  169.         dtParam:                LONGINT;
  170.         dtReserved:                LONGINT;
  171.     END;
  172.  
  173. {$IFC TARGET_OS_MAC }
  174.     MachineLocationPtr = ^MachineLocation;
  175.     MachineLocation = RECORD
  176.         latitude:                Fract;
  177.         longitude:                Fract;
  178.         CASE INTEGER OF
  179.         0: (
  180.             dlsDelta:            SInt8;                                    {  signed byte; daylight savings delta  }
  181.             );
  182.         1: (
  183.             gmtDelta:            LONGINT;                                {  use low 24-bits only  }
  184.             );
  185.     END;
  186.  
  187. {$ELSEC}
  188. {
  189.     QuickTime 3.0:
  190.     Alignment of MachineLocation is weird. The union above used for delta
  191.     tends not to work on non-Mac compilers.
  192. }
  193.     MachineLocation = RECORD
  194.         latitude:                Fract;
  195.         longitude:                Fract;
  196.         delta:                    BigEndianLong;                            {  high byte is daylight savings delta, low 24-bits is GMT delta  }
  197.     END;
  198.  
  199. {$ENDC}  {TARGET_OS_MAC}
  200.  
  201. FUNCTION IsMetric: BOOLEAN;
  202.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  203.     INLINE $3F3C, $0004, $A9ED;
  204.     {$ENDC}
  205. FUNCTION GetSysPPtr: SysPPtr;
  206.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  207.     INLINE $2EBC, $0000, $01F8;
  208.     {$ENDC}
  209.  
  210. {
  211.     NOTE: SysBeep() has been moved to Sound.h.  
  212.           We could not automatically #include Sound.h in this file
  213.           because Sound.h indirectly #include's OSUtils.h which
  214.           would make a circular include.
  215. }
  216. FUNCTION DTInstall(dtTaskPtr: DeferredTaskPtr): OSErr;
  217.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  218.     INLINE $205F, $A082, $3E80;
  219.     {$ENDC}
  220.  
  221.  
  222. FUNCTION GetMMUMode: SInt8;
  223.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  224.     INLINE $1EB8, $0CB2;
  225.     {$ENDC}
  226. PROCEDURE SwapMMUMode(VAR mode: SInt8);
  227.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  228.     INLINE $205F, $1010, $A05D, $1080;
  229.     {$ENDC}
  230. PROCEDURE Delay(numTicks: UInt32; VAR finalTicks: UInt32);
  231.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  232.     INLINE $225F, $205F, $A03B, $2280;
  233.     {$ENDC}
  234.  
  235. FUNCTION WriteParam: OSErr;
  236. PROCEDURE Enqueue(qElement: QElemPtr; qHeader: QHdrPtr);
  237.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  238.     INLINE $225F, $205F, $A96F;
  239.     {$ENDC}
  240. FUNCTION Dequeue(qElement: QElemPtr; qHeader: QHdrPtr): OSErr;
  241.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  242.     INLINE $225F, $205F, $A96E, $3E80;
  243.     {$ENDC}
  244. FUNCTION SetCurrentA5: LONGINT;
  245.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  246.     INLINE $2E8D, $2A78, $0904;
  247.     {$ENDC}
  248. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  249.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  250.     INLINE $2F4D, $0004, $2A5F;
  251.     {$ENDC}
  252. FUNCTION InitUtil: OSErr;
  253.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  254.     INLINE $A03F, $3E80;
  255.     {$ENDC}
  256.  
  257. {$IFC TARGET_CPU_PPC }
  258. PROCEDURE MakeDataExecutable(baseAddress: UNIV Ptr; length: UInt32);
  259. {$ENDC}  {TARGET_CPU_PPC}
  260.  
  261. {$IFC TARGET_CPU_68K }
  262. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  263. PROCEDURE FlushInstructionCache;
  264.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  265.     INLINE $7001, $A098;
  266.     {$ENDC}
  267. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  268. PROCEDURE FlushDataCache;
  269.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  270.     INLINE $7003, $A098;
  271.     {$ENDC}
  272. PROCEDURE FlushCodeCache;
  273.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  274.     INLINE $A0BD;
  275.     {$ENDC}
  276. {$ENDC}  {TARGET_CPU_68K}
  277.  
  278. FUNCTION FlushCodeCacheRange(address: UNIV Ptr; count: UInt32): OSErr;
  279.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  280.     INLINE $225F, $205F, $7009, $A098, $3E80;
  281.     {$ENDC}
  282. PROCEDURE ReadLocation(VAR loc: MachineLocation);
  283.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  284.     INLINE $205F, $203C, $000C, $00E4, $A051;
  285.     {$ENDC}
  286.  
  287. PROCEDURE WriteLocation({CONST}VAR loc: MachineLocation);
  288.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  289.     INLINE $205F, $203C, $000C, $00E4, $A052;
  290.     {$ENDC}
  291.  
  292.  
  293. {$IFC OLDROUTINENAMES }
  294. FUNCTION IUMetric: BOOLEAN;
  295.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  296.     INLINE $3F3C, $0004, $A9ED;
  297.     {$ENDC}
  298. {$ENDC}  {OLDROUTINENAMES}
  299.  
  300. {
  301.     NOTE: SysEnvirons is obsolete.  You should be using Gestalt.
  302. }
  303. { Environs Equates }
  304.  
  305. CONST
  306.     curSysEnvVers                = 2;                            { Updated to equal latest SysEnvirons version }
  307.  
  308.  
  309. TYPE
  310.     SysEnvRecPtr = ^SysEnvRec;
  311.     SysEnvRec = RECORD
  312.         environsVersion:        INTEGER;
  313.         machineType:            INTEGER;
  314.         systemVersion:            INTEGER;
  315.         processor:                INTEGER;
  316.         hasFPU:                    BOOLEAN;
  317.         hasColorQD:                BOOLEAN;
  318.         keyBoardType:            INTEGER;
  319.         atDrvrVersNum:            INTEGER;
  320.         sysVRefNum:                INTEGER;
  321.     END;
  322.  
  323.  
  324. CONST
  325.                                                                 {  Machine Types  }
  326.     envMac                        = -1;
  327.     envXL                        = -2;
  328.     envMachUnknown                = 0;
  329.     env512KE                    = 1;
  330.     envMacPlus                    = 2;
  331.     envSE                        = 3;
  332.     envMacII                    = 4;
  333.     envMacIIx                    = 5;
  334.     envMacIIcx                    = 6;
  335.     envSE30                        = 7;
  336.     envPortable                    = 8;
  337.     envMacIIci                    = 9;
  338.     envMacIIfx                    = 11;
  339.  
  340.                                                                 {  CPU types  }
  341.     envCPUUnknown                = 0;
  342.     env68000                    = 1;
  343.     env68010                    = 2;
  344.     env68020                    = 3;
  345.     env68030                    = 4;
  346.     env68040                    = 5;
  347.  
  348.                                                                 {  Keyboard types  }
  349.     envUnknownKbd                = 0;
  350.     envMacKbd                    = 1;
  351.     envMacAndPad                = 2;
  352.     envMacPlusKbd                = 3;
  353.     envAExtendKbd                = 4;
  354.     envStandADBKbd                = 5;
  355.     envPrtblADBKbd                = 6;
  356.     envPrtblISOKbd                = 7;
  357.     envStdISOADBKbd                = 8;
  358.     envExtISOADBKbd                = 9;
  359.  
  360. FUNCTION SysEnvirons(versionRequested: INTEGER; VAR theWorld: SysEnvRec): OSErr;
  361.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  362.     INLINE $205F, $301F, $A090, $3E80;
  363.     {$ENDC}
  364.  
  365.  
  366.  
  367.  
  368.  
  369. {$ALIGN RESET}
  370. {$POP}
  371.  
  372. {$SETC UsingIncludes := OSUtilsIncludes}
  373.  
  374. {$ENDC} {__OSUTILS__}
  375.  
  376. {$IFC NOT UsingIncludes}
  377.  END.
  378. {$ENDC}
  379.